package exceptionDemo;

import java.text.ParseException;
import java.text.SimpleDateFormat;

public class ExceptionTestDriver {
    public static void main(String[] args) {
        int i=test21();
        System.out.println("return和finally执行先后关系："+i);
    }
    /**
     *
     */
    private static int test21(){
        // 创建个一个日期格式转换的工具类SimpleDateFormat的实例对象
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        //检查性异常要求进行强制处理；
        try {
            sdf.parse("2019-02-18 20 08:33");//此处会发生异常
            System.out.println("准备执行try-return");
            return 1;
        }catch (Exception e){
            //进行异常处理
            System.out.println("发生异常222"+e.getMessage());
            e.printStackTrace();
            System.out.println("准备执行catch-return");
            return 2;

        }finally {
            System.out.println("这里执行了finally");
           // System.out.println("准备执行finally-return");
           // return 3;

        }
    }
    /**
     * 异常分类：非运行时异常（检查性异常）
     */
    private static void test11() {
        // 创建个一个日期格式转换的工具类SimpleDateFormat的实例对象
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        //检查性异常要求进行强制处理；
        try {
            sdf.parse("2019-02-18 20 08:33");
        }catch (NullPointerException e){
            //进行异常处理
            System.out.println("发生异常1111");

        }catch (Exception e){
            //进行异常处理
            System.out.println("发生异常222");
        }finally {
            System.out.println("这里执行了finally");
        }

    }

    /**
     * 异常分类：非运行时异常（检查性异常）
     */
    private static void test12() {
        // 创建个一个日期格式转换的工具类SimpleDateFormat的实例对象
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        //检查性异常要求进行强制处理；
        try {           //ctrl+alt+t
            sdf.parse("2019-02-18 20:08:33");
        } catch (ParseException e) {
            e.printStackTrace();
        }

        try {
            sdf.parse("2019-02-18 20:08:33");
        }catch (NullPointerException |ParseException e){
            //进行异常处理

        }
    }
    /**
     * 异常分类：运行时异常（非检查性异常）
     */
    private static void test01() {
        double dVal1 = 12.0;
        double dVal2 = 0;
        if (dVal2 == 0) {
            System.out.println("除数不能为0");
        } else {
            System.out.println("发生运行时异常：" + dVal1 / dVal2);  //发生运行时异常：Infinity  ：异常
        }
    }

    /**
     * 异常分类：运行时异常（非检查性异常）
     */
    private static void test02(){
        double[] arrs=new  double [5];
        int i=2;
        if (i<arrs.length){
            System.out.println("发生运行时："+arrs[i]);
        }

    }

    /**
     * 异常分类：运行时异常（非检查性异常）
     */
    private static void test03(){
        String str=null;
        if (str==null){
            System.out.println("发生运行时异常："+str.indexOf(3));
        }
    }
}
